import { DefineComponent } from 'vue'

export interface ImenuList {
  path: string
  name: string
  component: () => Promise<any> | DefineComponent
  children?: ImenuList[]
  redirect?: string
  meta: {
    title: string
    icon: string
    hidden: boolean
  }
}

export interface Itheme {
  // 左侧菜单栏样式
  sideBarActive: number
  // 顶部菜单栏样式
  topBarActive: number
  // 主题颜色
  colorActive: number
  // 布局模式
  layoutActive: number
}

export interface Isetting {
  // 面包屑
  breadcrumb: boolean
  // 面包屑图标
  breadcrumbIcon: boolean
  // 折叠图标
  hamburger: boolean
  // 全屏图标
  screenfull: boolean
  // 尺寸图标
  size: boolean
  // 多语言图标
  locale: boolean
  // 标签页
  tagsView: boolean
  // 标签页图标
  getTagsViewIcon: boolean
  // logo
  logo: boolean
  // 菜单手风琴
  uniqueOpened: boolean
  // 固定header
  fixedHeader: boolean
  // 页脚
  footer: boolean
  // 灰色模式
  greyMode: boolean
  // 暗黑模式
  isDark: boolean
  // 开启水印
  watermark: boolean
  // 主题相关
  theme: Itheme
}

export interface IsettingsState {
  menuList: ImenuList[]
  settingsData: Isetting
  fold: boolean // 是否折叠
  refsh: boolean // 是否刷新
}
